<html>
 <head>
  <meta charset="utf-8"/>
  <meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport"/>
  <title>
   一个被知乎管理员和谐了的“知乎数据抓取程序”（.net、c#数据挖掘）  | 数螺 | NAUT IDEA
  </title>
  <link href="http://cdn.bootcss.com/bootstrap/3.3.6/css/bootstrap-theme.min.css" rel="stylesheet"/>
  <link href="http://cdn.bootcss.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"/>
  <style type="text/css">
   #xmain img {
                  max-width: 100%;
                  display: block;
                  margin-top: 10px;
                  margin-bottom: 10px;
                }

                #xmain p {
                    line-height:150%;
                    font-size: 16px;
                    margin-top: 20px;
                }

                #xmain h2 {
                    font-size: 24px;
                }

                #xmain h3 {
                    font-size: 20px;
                }

                #xmain h4 {
                    font-size: 18px;
                }


                .header {
	           background-color: #0099ff;
	           color: #ffffff;
	           margin-bottom: 20px;
	        }

	        .header p {
                  margin: 0px;
                  padding: 10px 0;
                  display: inline-block;  
                  vertical-align: middle;
                  font-size: 16px;
               }

               .header a {
                 color: white;
               }

              .header img {
                 height: 25px;
              }
  </style>
  <script src="http://cdn.bootcss.com/jquery/3.0.0/jquery.min.js">
  </script>
  <script src="http://nautstatic-10007657.file.myqcloud.com/static/css/readability.min.js" type="text/javascript">
  </script>
  <script type="text/javascript">
   $(document).ready(function() {
                 var loc = document.location;
                 var uri = {
                  spec: "http://dataunion.org/8975.html",
                  host: "http://dataunion.org",
                  prePath: "http://dataunion.org",
                  scheme: "http",
                  pathBase: "http://dataunion.org/"
                 };
    
                 var documentClone = document.cloneNode(true);
                 var article = new Readability(uri, documentClone).parse();
     
                 document.getElementById("xmain").innerHTML = article.content;
                });
  </script>
  <!-- 1466459343: Accept with keywords: (title(0.428571428571):社区,c#,程序,数盟,管理员,数据挖掘,数据, topn(0.3):社区,程序,数盟,行业资讯,开源,名称,数据挖掘,手机,远程,数据分析,数据库,职业规划,源码,基础架构,文章,开机,服务器,数据,女神,c#,立马,问题,密码,窗体,邮箱,字符串,客户端,是不是,爬虫,源程序).-->
 </head>
 <body onload="">
  <div class="header">
   <div class="container">
    <div class="row">
     <div class="col-xs-6 col-sm-6 text-left">
      <a href="/databee">
       <img src="http://nautidea-10007657.cos.myqcloud.com/logo_white.png"/>
      </a>
      <a href="/databee">
       <p>
        数螺
       </p>
      </a>
     </div>
     <div class="hidden-xs col-sm-6 text-right">
      <p>
       致力于数据科学的推广和知识传播
      </p>
     </div>
    </div>
   </div>
  </div>
  <div class="container text-center">
   <h1>
    一个被知乎管理员和谐了的“知乎数据抓取程序”（.net、c#数据挖掘）
   </h1>
  </div>
  <div class="container" id="xmain">
   ﻿﻿
   <title>
    一个被知乎管理员和谐了的“知乎数据抓取程序”（.net、c#数据挖掘） | 数盟社区
   </title>
   <!-- All in One SEO Pack 2.2.7.6.2 by Michael Torbert of Semper Fi Web Design[32,82] -->
   <!-- /all in one seo pack -->
   <!--
<div align="center">
<a href="http://strata.oreilly.com.cn/hadoop-big-data-cn?cmp=mp-data-confreg-home-stcn16_dataunion_pc" target="_blank"><img src="http://dataunion.org/wp-content/uploads/2016/05/stratabj.jpg"/ ></a>
</div>
-->
   <header id="header-web">
    <div class="header-main">
     <hgroup class="logo">
      <h1>
       <a href="http://dataunion.org/" rel="home" title="数盟社区">
        <img src="http://dataunion.org/wp-content/themes/yzipi/images/logo.png"/>
       </a>
      </h1>
     </hgroup>
     <!--logo-->
     <nav class="header-nav">
      <ul class="menu" id="menu-%e4%b8%bb%e8%8f%9c%e5%8d%95">
       <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-has-children menu-item-71" id="menu-item-71">
        <a href="http://dataunion.org/category/events" title="events">
         活动
        </a>
        <ul class="sub-menu">
         <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-22457" id="menu-item-22457">
          <a href="http://dataunion.org/2016timeline">
           2016档期
          </a>
         </li>
         <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-22459" id="menu-item-22459">
          <a href="http://dataunion.org/category/parterc">
           合作会议
          </a>
         </li>
        </ul>
       </li>
       <li class="menu-item menu-item-type-taxonomy menu-item-object-category current-post-ancestor menu-item-has-children menu-item-20869" id="menu-item-20869">
        <a href="http://dataunion.org/category/tech" title="articles">
         文章
        </a>
        <ul class="sub-menu">
         <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-20867" id="menu-item-20867">
          <a href="http://dataunion.org/category/tech/base" title="base">
           基础架构
          </a>
         </li>
         <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-3302" id="menu-item-3302">
          <a href="http://dataunion.org/category/tech/ai" title="ai">
           人工智能
          </a>
         </li>
         <li class="menu-item menu-item-type-taxonomy menu-item-object-category current-post-ancestor current-menu-parent current-post-parent menu-item-3303" id="menu-item-3303">
          <a href="http://dataunion.org/category/tech/analysis" title="analysis">
           数据分析
          </a>
         </li>
         <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-21920" id="menu-item-21920">
          <a href="http://dataunion.org/category/tech/dm">
           数据挖掘
          </a>
         </li>
         <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-3314" id="menu-item-3314">
          <a href="http://dataunion.org/category/tech/viz" title="viz">
           可视化
          </a>
         </li>
         <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-3305" id="menu-item-3305">
          <a href="http://dataunion.org/category/tech/devl" title="devl">
           编程语言
          </a>
         </li>
        </ul>
       </li>
       <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-has-children menu-item-20876" id="menu-item-20876">
        <a href="http://dataunion.org/category/industry">
         行业
        </a>
        <ul class="sub-menu">
         <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-16328" id="menu-item-16328">
          <a href="http://dataunion.org/category/industry/case" title="case">
           行业应用
          </a>
         </li>
         <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-2112" id="menu-item-2112">
          <a href="http://dataunion.org/category/industry/demo" title="demo">
           Demo展示
          </a>
         </li>
         <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-21562" id="menu-item-21562">
          <a href="http://dataunion.org/category/industry/news">
           行业资讯
          </a>
         </li>
        </ul>
       </li>
       <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-311" id="menu-item-311">
        <a href="http://dataunion.org/category/sources" title="sources">
         资源
        </a>
       </li>
       <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-20870" id="menu-item-20870">
        <a href="http://dataunion.org/category/books" title="book">
         图书
        </a>
       </li>
       <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-21363" id="menu-item-21363">
        <a href="http://dataunion.org/category/training">
         课程
        </a>
       </li>
       <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-has-children menu-item-21853" id="menu-item-21853">
        <a href="http://dataunion.org/category/jobs">
         职位
        </a>
        <ul class="sub-menu">
         <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-22050" id="menu-item-22050">
          <a href="http://dataunion.org/category/career">
           职业规划
          </a>
         </li>
        </ul>
       </li>
      </ul>
     </nav>
     <!--header-nav-->
    </div>
   </header>
   <!--header-web-->
   <div id="main">
    <div id="soutab">
     <form action="http://dataunion.org/" class="search" method="get">
     </form>
    </div>
    <div id="container">
     <nav id="mbx">
      当前位置：
      <a href="http://dataunion.org">
       首页
      </a>
      &gt;
      <a href="http://dataunion.org/category/tech">
       文章
      </a>
      &gt;
      <a href="http://dataunion.org/category/tech/analysis">
       数据分析
      </a>
      &gt;  正文
     </nav>
     <!--mbx-->
     <article class="content">
      <header align="centre" class="contenttitle">
       <div class="mscc">
        <h1 class="mscctitle">
         <a href="http://dataunion.org/8975.html">
          一个被知乎管理员和谐了的“知乎数据抓取程序”（.net、c#数据挖掘）
         </a>
        </h1>
        <address class="msccaddress ">
         <em>
          4,400 次阅读 -
         </em>
         <a href="http://dataunion.org/category/tech/analysis" rel="category tag">
          数据分析
         </a>
        </address>
       </div>
      </header>
      <div class="content-text">
       <div id="zh-question-title">
        <h2 class="zm-item-title zm-editable-content">
         <span style="font-size: 10pt;">
          作者：
          <a class="user_name" href="http://my.csdn.net/wuyidexinsheng" target="_blank">
           wuyidexinsheng
          </a>
         </span>
        </h2>
        <h2 class="zm-item-title zm-editable-content">
         问：
         <a href="http://www.zhihu.com/question/27621722" target="_blank">
          能利用爬虫技术做到哪些很酷很有趣很有用的事情？
         </a>
        </h2>
       </div>
       <div class="zm-item-rich-text" id="zh-question-detail">
        <div class="zm-editable-content">
         准备学习python爬虫。各位大神都会用爬虫做哪些有趣的事情？今天突然想玩玩爬虫，就提了这个问题。跟着YouTube上的一个tutor写了个简单的程序，爬了一点豆瓣的数据。主要用到request和bs4（BeautifulSoup）模块。虽然简陋，毕竟是人生中的第一只爬虫啊……以示纪念，代码写在博客里了：
         <a class=" wrap external" href="http://plough-man.com/?p=379" rel="nofollow noreferrer" target="_blank">
          我的第一只爬虫：爬取豆瓣读书
         </a>
        </div>
       </div>
       <p>
        没想到第一次答题居然登上了知乎互联网专栏的榜首了，也上了知乎首页，可惜被和谐了。
       </p>
       <p>
        <a href="http://dataunion.org/wp-content/uploads/2015/01/1112.png">
         <img src="http://dataunion.org/wp-content/uploads/2015/01/1112.png"/>
        </a>
        <a href="http://dataunion.org/wp-content/uploads/2015/01/2221.png">
         <img src="http://dataunion.org/wp-content/uploads/2015/01/2221.png"/>
        </a>
        <a href="http://dataunion.org/wp-content/uploads/2015/01/444.png">
         <img src="http://dataunion.org/wp-content/uploads/2015/01/444.png"/>
        </a>
       </p>
       <p>
        <strong>
         答：
        </strong>
       </p>
       <p>
        监测她（他）的知乎，她关注、回答、赞了某个问题立马电脑和手机都弹出提示是不是很酷！先上两张图：
       </p>
       <p>
        <a href="http://dataunion.org/wp-content/uploads/2015/01/555.png">
         <img src="http://dataunion.org/wp-content/uploads/2015/01/555.png"/>
        </a>
        <a href="http://dataunion.org/wp-content/uploads/2015/01/666.png">
         <img src="http://dataunion.org/wp-content/uploads/2015/01/666.png"/>
        </a>
        <a href="http://dataunion.org/wp-content/uploads/2015/01/777.png">
         <img src="http://dataunion.org/wp-content/uploads/2015/01/777-1024x385.png"/>
        </a>
       </p>
       <p>
        我是个.NET程序猿，有一天女神告诉我有一个很不错的社区叫“知乎”，我经常一过来就看到她在看知乎，但每次我想看她都看了啥啊，她就遮住屏幕不让我看。于是乎，在我心里埋下了一颗强烈的好奇心。知乎中搜了下她的名字，经过各种筛选知道了她的知乎空间。第一时间出现的想法是我要写个监测程序，她关注的所有问题我都想知道。
        <br/>
        连续奋战5小时，至凌晨3点程序终于写出来了。主要HttpWebRequest加正则表达式来抓取数据，程序开机自动运行，数据库设在一台24小时开机的服务器上。多个监测客户端同时运行，公司的，家里的，远程服务器上的。每隔5分钟自动循环读取一次数据，如果检测到关注了新的问题，立马将它们发送至我的QQ邮箱和我的163邮箱，大家都知道QQ邮箱有提醒功能，一发过来，立马会弹出一个窗体告诉你有新的邮件。手机qq客户端也有，所以不管我是在上班的路上，还是在电脑旁，只要她有新动态我立马就知道了。是不是很酷？
        <br/>
        监测程序已经运行三个多月了，收集了他二三百个关注的问题，我知道她一般都是吃中饭或者晚饭前喜欢看一下知乎，晚上睡前会看会，她睡得早但偶尔凌晨1点多还看知乎。她关注情感类的问题最多，而且那段时间我一直在追她，所以我能根据她关注的问题来推测她的一些想法，包括约会聊天时我可以聊一些她感兴趣的话题。所以实用性还是比较强的。
        <br/>
        假如某一天凌晨1点，手机突然响了一下，发现她关注了某个问题。立马给她发一条短信过去，你是不是还没睡啊？ 是啊，你怎么知道我没睡的？ 凭感觉！ 嘿嘿。 然后慢慢靠近她关注的那个话题去聊，这是不是会让她感觉到你特别懂她。好奇你居然知道她睡没睡，好奇你和她聊的话那么符合她的心声。
       </p>
       <p>
        如此利器，有谁想要的吗？ 赞超过一百，程序和源代码都放知乎上共享。
       </p>
       <p>
        ====21日9:37更新=====
        <br/>
        没想到第一次答题就上榜了，好不开心，来来来，别停哈。怒上榜首，我开源12306抢票源码。我先赴约去开源我的知乎监测程序吧，一会把链接发过来。谢谢大家的赞！
       </p>
       <p>
        <a href="http://dataunion.org/wp-content/uploads/2015/01/888.png">
         <img src="http://dataunion.org/wp-content/uploads/2015/01/888.png"/>
        </a>
        <a href="http://dataunion.org/wp-content/uploads/2015/01/999.png">
         <img src="http://dataunion.org/wp-content/uploads/2015/01/999.png"/>
        </a>
       </p>
       <p>
        ===============
        <br/>
        ====21日11:50更新=====
        <br/>
        《关于隐私》
        <br/>
        先说明下，很多人都说我这样做侵犯隐私？没有吧，这些数据都是公开的啊，她也知道我关注了她呀，但蛋疼的知乎客户端没有这么细致的提醒功能，我甚至在客户端上找不到我都关注了哪些人。知乎手机app开发团队弱爆了，这么强有力的需求居然没有满足？ 而且，知乎！你怎么就没有订阅功能呢？邮箱订阅！ 我提出来啦哈，采纳了给我大V可好？
       </p>
       <p>
        《关于匿不匿名》
        <br/>
        FK，男子汉大丈夫，匿啥名啊。女神知道了就知道了，又不是做什么伤天害理的事，敢作敢当！之所以写这么一个程序，也并不是完全的偷窥心理。对于一个程序员来说，写出一个新鲜的程序是能给程序员一种很大的乐趣的，这一般人难以理解，想当年在学校时，通宵写俄罗斯方块，白天上课不听课在那研究一个方块当按左键是什么样子什么逻辑，右键又怎样。这是非常有意思的事，编程其实是一个艺术活，好的框架和优质的代码让人一看就感觉特别享受。 所以我写这么个程序同样也是满足自己的一种乐趣。不必匿！
       </p>
       <p>
        《关于女神追到没？》
        <br/>
        追到啦，哈哈！好爽啊，9月份去骑了趟川藏线，路遇佛像及经轮，我就祈祷我要娶她做老婆。且出发前找牛逼大神算了一卦（中国易学协会副会长），说我10月份很有姻缘缘分。于是，我在世界三大冰川之一的-来古冰川的河床上找了一下午的石头，终于找到一颗天然红色心形的爱情石，回来后我就拿着石头跟她表白了，然后就成了！虽然她说我表白像检讨一样，但也很感人！
        <br/>
        可惜，我们在一起没多久就分手了。原因一两句话说不完，总之不管以后怎样。都祝福她，虽然在一起不长时间，但那是很美的回忆。我会珍藏！
        <br/>
        ===================
        <br/>
        <strong>
         =====2015-1-21 上午11:16分更新=======
        </strong>
       </p>
       <p>
        <strong>
         程序开源地址：
        </strong>
       </p>
       <p>
        <strong>
         下载
         <a href="http://download.csdn.net/detail/wuyidexinsheng/8382253" target="_blank">
          源程序
         </a>
         ：
         <a href="http://download.csdn.net/detail/wuyidexinsheng/8382253" target="_blank">
          http://download.csdn.net/detail/wuyidexinsheng/8382253
         </a>
         <br/>
         程序博文地址：
         <a href="http://blog.csdn.net/wuyidexinsheng/article/details/42964707" target="_blank">
          http://blog.csdn.net/wuyidexinsheng/article/details/42964707
         </a>
        </strong>
       </p>
       <p>
        <strong>
         <br/>
         <strong>
          步入正题，思路描述：
         </strong>
         <br/>
        </strong>
       </p>
       <div>
        下来源程序后，先自己去建数据库改配置哈，否则程序运行不起来的。
       </div>
       <div>
        <div class="dp-highlighter bg_html">
         <div class="bar">
         </div>
         <ol class="dp-xml" start="1">
          <li class="alt">
           <span class="tag">
            &lt;
           </span>
           <span class="tag-name">
            span
           </span>
           <span class="attribute">
            style
           </span>
           =
           <span class="attribute-value">
            “font-size:10px;”
           </span>
           <span class="tag">
            &gt;
           </span>
           <span class="tag">
            &lt;?
           </span>
           <span class="tag-name">
            xml
           </span>
           <span class="attribute">
            version
           </span>
           =
           <span class="attribute-value">
            “1.0”
           </span>
           <span class="tag">
            ?&gt;
           </span>
          </li>
          <li class="">
           <span class="tag">
            &lt;
           </span>
           <span class="tag-name">
            configuration
           </span>
           <span class="tag">
            &gt;
           </span>
          </li>
          <li class="alt">
           <span class="tag">
            &lt;
           </span>
           <span class="tag-name">
            appSettings
           </span>
           <span class="tag">
            &gt;
           </span>
          </li>
          <li class="">
           <span class="comments">
            &lt;!–数据有两种存储方式，一种存储于本地程序目录下的Ids.txt，但那只存了问题ID，完整的数据存于oracle数据库中–&gt;
           </span>
          </li>
          <li class="alt">
           <span class="tag">
            &lt;
           </span>
           <span class="tag-name">
            add
           </span>
           <span class="attribute">
            key
           </span>
           =
           <span class="attribute-value">
            “connStr”
           </span>
           <span class="attribute">
            value
           </span>
           =
           <span class="attribute-value">
            “Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=DZZH)));User Id=xxxxx;Password=xxxx”
           </span>
           <span class="tag">
            /&gt;
           </span>
          </li>
          <li class="">
           <span class="comments">
            &lt;!– 设置监测循环时间：秒 –&gt;
           </span>
          </li>
          <li class="alt">
           <span class="tag">
            &lt;
           </span>
           <span class="tag-name">
            add
           </span>
           <span class="attribute">
            key
           </span>
           =
           <span class="attribute-value">
            “Interval”
           </span>
           <span class="attribute">
            value
           </span>
           =
           <span class="attribute-value">
            “600”
           </span>
           <span class="tag">
            /&gt;
           </span>
          </li>
          <li class="">
           <span class="comments">
            &lt;!–设置自动发送信息机器人邮箱–&gt;
           </span>
          </li>
          <li class="alt">
           <span class="tag">
            &lt;
           </span>
           <span class="tag-name">
            add
           </span>
           <span class="attribute">
            key
           </span>
           =
           <span class="attribute-value">
            “smtpAddress”
           </span>
           <span class="attribute">
            value
           </span>
           =
           <span class="attribute-value">
            “smtp.163.com”
           </span>
           <span class="tag">
            /&gt;
           </span>
          </li>
          <li class="">
           <span class="comments">
            &lt;!–用户名–&gt;
           </span>
          </li>
          <li class="alt">
           <span class="tag">
            &lt;
           </span>
           <span class="tag-name">
            add
           </span>
           <span class="attribute">
            key
           </span>
           =
           <span class="attribute-value">
            “sendEmailFrom”
           </span>
           <span class="attribute">
            value
           </span>
           =
           <span class="attribute-value">
            “xxxxxxxx@163.com”
           </span>
           <span class="tag">
            /&gt;
           </span>
          </li>
          <li class="">
           <span class="comments">
            &lt;!–密码–&gt;
           </span>
          </li>
          <li class="alt">
           <span class="tag">
            &lt;
           </span>
           <span class="tag-name">
            add
           </span>
           <span class="attribute">
            key
           </span>
           =
           <span class="attribute-value">
            “sendEmailFromPwd”
           </span>
           <span class="attribute">
            value
           </span>
           =
           <span class="attribute-value">
            “xxxxxxxxx”
           </span>
           <span class="tag">
            /&gt;
           </span>
          </li>
          <li class="">
           <span class="comments">
            &lt;!–接收邮箱地址–&gt;
           </span>
          </li>
          <li class="alt">
           <span class="tag">
            &lt;
           </span>
           <span class="tag-name">
            add
           </span>
           <span class="attribute">
            key
           </span>
           =
           <span class="attribute-value">
            “strMailAddressTo”
           </span>
           <span class="attribute">
            value
           </span>
           =
           <span class="attribute-value">
            “xxxxxxxx@163.com,xxxxxxxx@qq.com”
           </span>
           <span class="tag">
            /&gt;
           </span>
          </li>
          <li class="">
           <span class="comments">
            &lt;!–邮件名称抬头–&gt;
           </span>
          </li>
          <li class="alt">
           <span class="tag">
            &lt;
           </span>
           <span class="tag-name">
            add
           </span>
           <span class="attribute">
            key
           </span>
           =
           <span class="attribute-value">
            “EmailName”
           </span>
           <span class="attribute">
            value
           </span>
           =
           <span class="attribute-value">
            “zhApp-家里电脑”
           </span>
           <span class="tag">
            /&gt;
           </span>
          </li>
          <li class="">
           <span class="comments">
            &lt;!–END–&gt;
           </span>
          </li>
          <li class="alt">
           <span class="comments">
            &lt;!–监测地址–&gt;
           </span>
          </li>
          <li class="">
           <span class="tag">
            &lt;
           </span>
           <span class="tag-name">
            add
           </span>
           <span class="attribute">
            key
           </span>
           =
           <span class="attribute-value">
            “WatchingURL”
           </span>
           <span class="attribute">
            value
           </span>
           =
           <span class="attribute-value">
            “http://www.zhihu.com/people/wu-xin-sheng-7”
           </span>
           <span class="tag">
            /&gt;
           </span>
          </li>
          <li class="alt">
           <span class="tag">
            &lt;/
           </span>
           <span class="tag-name">
            appSettings
           </span>
           <span class="tag">
            &gt;
           </span>
          </li>
          <li class="">
           <span class="tag">
            &lt;
           </span>
           <span class="tag-name">
            startup
           </span>
           <span class="tag">
            &gt;
           </span>
          </li>
          <li class="alt">
           <span class="tag">
            &lt;
           </span>
           <span class="tag-name">
            supportedRuntime
           </span>
           <span class="attribute">
            version
           </span>
           =
           <span class="attribute-value">
            “v4.0”
           </span>
           <span class="attribute">
            sku
           </span>
           =
           <span class="attribute-value">
            “.NETFramework,Version=v4.0”
           </span>
           <span class="tag">
            /&gt;
           </span>
          </li>
          <li class="">
           <span class="tag">
            &lt;/
           </span>
           <span class="tag-name">
            startup
           </span>
           <span class="tag">
            &gt;
           </span>
          </li>
          <li class="alt">
           <span class="tag">
            &lt;/
           </span>
           <span class="tag-name">
            configuration
           </span>
           <span class="tag">
            &gt;
           </span>
           <span class="tag">
            &lt;/
           </span>
           <span class="tag-name">
            span
           </span>
           <span class="tag">
            &gt;
           </span>
          </li>
         </ol>
        </div>
       </div>
       <p>
        第一步：通过Cinser.Common.HttpHelper.GetString(“www.zhihu.com/people/wu-xin-sheng-7”)读取给定的一个网址的后台代码：
       </p>
       <p>
        结果如下图所示：
       </p>
       <p>
       </p>
       <p>
        如我空间的源码中就有这么一段：
       </p>
       <div class="dp-highlighter bg_html">
        <ol class="dp-xml" start="1">
         <li class="alt">
          <span class="tag">
           &lt;
          </span>
          <span class="tag-name">
           span
          </span>
          <span class="attribute">
           class
          </span>
          =
          <span class="attribute-value">
           “name”
          </span>
          <span class="tag">
           &gt;
          </span>
          伍新生
          <span class="tag">
           &lt;/
          </span>
          <span class="tag-name">
           span
          </span>
          <span class="tag">
           &gt;
          </span>
          ，
          <span class="tag">
           &lt;
          </span>
          <span class="tag-name">
           span
          </span>
          <span class="attribute">
           class
          </span>
          =
          <span class="attribute-value">
           “bio”
          </span>
          <span class="attribute">
           title
          </span>
          =
          <span class="attribute-value">
           “五颜六色的情感，我毕生的追求！”
          </span>
          <span class="tag">
           &gt;
          </span>
          五颜六色的情感，我毕生的追求！
          <span class="tag">
           &lt;/
          </span>
          <span class="tag-name">
           span
          </span>
          <span class="tag">
           &gt;
          </span>
         </li>
         <li class="">
          <span class="tag">
           &lt;/
          </span>
          <span class="tag-name">
           div
          </span>
          <span class="tag">
           &gt;
          </span>
         </li>
         <li class="alt">
          <span class="tag">
           &lt;/
          </span>
          <span class="tag-name">
           div
          </span>
          <span class="tag">
           &gt;
          </span>
         </li>
         <li class="">
          <span class="tag">
           &lt;
          </span>
          <span class="tag-name">
           div
          </span>
          <span class="attribute">
           class
          </span>
          =
          <span class="attribute-value">
           “body clearfix”
          </span>
          <span class="tag">
           &gt;
          </span>
         </li>
         <li class="alt">
          <span class="tag">
           &lt;
          </span>
          <span class="tag-name">
           div
          </span>
          <span class="attribute">
           class
          </span>
          =
          <span class="attribute-value">
           “zm-profile-header-avatar-container self”
          </span>
          <span class="tag">
           &gt;
          </span>
         </li>
         <li class="">
          <span class="tag">
           &lt;
          </span>
          <span class="tag-name">
           img
          </span>
          <span class="attribute">
           alt
          </span>
          =
          <span class="attribute-value">
           “伍新生”
          </span>
         </li>
         <li class="alt">
          <span class="attribute">
           src
          </span>
          =
          <span class="attribute-value">
           “http://pic4.zhimg.com/94cc60166_l.jpg”
          </span>
         </li>
         <li class="">
          <span class="attribute">
           class
          </span>
          =
          <span class="attribute-value">
           “zm-profile-header-img zg-avatar-big zm-avatar-editor-preview”
          </span>
          <span class="tag">
           /&gt;
          </span>
         </li>
         <li class="alt">
         </li>
         <li class="">
          <span class="tag">
           &lt;
          </span>
          <span class="tag-name">
           span
          </span>
          <span class="attribute">
           class
          </span>
          =
          <span class="attribute-value">
           “zm-entry-head-avatar-edit-button”
          </span>
          <span class="tag">
           &gt;
          </span>
          修改头像
          <span class="tag">
           &lt;/
          </span>
          <span class="tag-name">
           span
          </span>
          <span class="tag">
           &gt;
          </span>
         </li>
        </ol>
       </div>
       <p>
        第二步：通过调用方法private List&lt;Question&gt; GetQuestions(string source)截取关键数据。
       </p>
       <p>
        原理很简单，所有知乎的问题都是如下的格式：
        <span class="html-tag">
         &lt;a
         <span class="html-attribute-name">
          class
         </span>
         =”
         <span class="html-attribute-value">
          question_link
         </span>
         “
         <span class="html-attribute-name">
          target
         </span>
         =”
         <span class="html-attribute-value">
          _blank
         </span>
         “
         <span class="html-attribute-name">
          href
         </span>
         =”
         <a class="html-attribute-value html-external-link" href="http://www.zhihu.com/question/27621722/answer/37636385" target="_blank">
          /question/27621722/answer/37636385
         </a>
         “&gt;
        </span>
        能利用爬虫技术做到哪些很酷很有趣很有用的事情？
        <span class="html-tag">
         &lt;/a&gt;
        </span>
       </p>
       <p>
        接下来那就是字符串截取呗：调用Cinser.Common.StringPlus.SubString(source, “&lt;a class=\”question_link\”, “&lt;/a&gt;”)等依次截取问题的ID,名称等数据。
       </p>
       <div class="dp-highlighter bg_csharp">
        <ol class="dp-c" start="1">
         <li class="alt">
          <span class="keyword">
           private
          </span>
          List&lt;Question&gt; GetQuestions(
          <span class="keyword">
           string
          </span>
          source)
         </li>
         <li class="">
          {
         </li>
         <li class="alt">
          List&lt;Question&gt; questions =
          <span class="keyword">
           new
          </span>
          List&lt;Question&gt;();
         </li>
         <li class="">
          <span class="keyword">
           string
          </span>
          startStr =
          <span class="string">
           “&lt;a class=\”question_link\””
          </span>
          ;
         </li>
         <li class="alt">
          <span class="keyword">
           if
          </span>
          (source.IndexOf(startStr) != -1)
         </li>
         <li class="">
          {
         </li>
         <li class="alt">
          Question q =
          <span class="keyword">
           new
          </span>
          Question();
         </li>
         <li class="">
          <span class="keyword">
           string
          </span>
          content = Cinser.Common.StringPlus.SubString(source, startStr,
          <span class="string">
           “&lt;/a&gt;”
          </span>
          );
         </li>
         <li class="alt">
          q.Id = Cinser.Common.StringPlus.SubString(content,
          <span class="string">
           “question/”
          </span>
          ,
          <span class="string">
           “\””
          </span>
          );
         </li>
         <li class="">
          q.Title = content.Substring(content.IndexOf(
          <span class="string">
           “&gt;”
          </span>
          ) + 1);
         </li>
         <li class="alt">
          q.Time = DateTime.Now;
         </li>
         <li class="">
          questions.Add(q);
         </li>
         <li class="alt">
          source = source.Substring(source.IndexOf(startStr) + startStr.Length);
         </li>
         <li class="">
          questions.AddRange(GetQuestions(source));
         </li>
         <li class="alt">
          }
         </li>
         <li class="">
          <span class="keyword">
           return
          </span>
          questions;
         </li>
         <li class="alt">
          }
         </li>
        </ol>
       </div>
       <p>
        第三步：将取到的问题写入数据库，并写入本地Ids.txt。
       </p>
       <p>
        因为5分钟读取一次数据，肯定会读取到部分已经度过的数据咯。就是通过取到id然后看Ids.txt里面这个id是不是已经存在了，如果存在了就表示已经抓去过啦。
       </p>
       <p>
        为什么问题都已经写到oracle数据库了还要往本地Ids.txt写一次呢，因为oracle数据库是部署在远程服务器上的啊。如果这台服务器突然出故障死机了，怎么办？程序还得要运行啊，所以程序往两个地方都写一次数据。如果oracle数据库不能访问，则通过读取和写入本地ids来记录问题。
       </p>
       <p>
        数据抓取其实就这么简单。
       </p>
       <p>
        如下是部分源码，也可以直接去下载
        <a href="http://download.csdn.net/detail/wuyidexinsheng/8382253" target="_blank">
         源程序
        </a>
        ：http://download.csdn.net/detail/wuyidexinsheng/8382253
       </p>
       <p>
        如下是程序主窗体源码：
       </p>
       <div class="dp-highlighter bg_csharp">
        <ol class="dp-c" start="1">
         <li class="alt">
          <span class="keyword">
           public
          </span>
          partial
          <span class="keyword">
           class
          </span>
          Form1 : Form
         </li>
         <li class="">
          {
         </li>
         <li class="alt">
          DataProvider dal;
         </li>
         <li class="">
          <span class="keyword">
           string
          </span>
          watchingURL =
          <span class="keyword">
           string
          </span>
          .Empty;
         </li>
         <li class="alt">
          <span class="keyword">
           int
          </span>
          LoopCount = 0;
         </li>
         <li class="">
          <span class="keyword">
           public
          </span>
          Form1()
         </li>
         <li class="alt">
          {
         </li>
         <li class="">
          InitializeComponent();
         </li>
         <li class="alt">
          dal =
          <span class="keyword">
           new
          </span>
          DataProvider();
         </li>
         <li class="">
          dal.AddLog(
          <span class="string">
           “程序启动”
          </span>
          );
         </li>
         <li class="alt">
         </li>
         <li class="">
          <span class="keyword">
           base
          </span>
          .WindowState = FormWindowState.Minimized;
         </li>
         <li class="alt">
          <span class="keyword">
           base
          </span>
          .Show();
         </li>
         <li class="">
          <span class="keyword">
           base
          </span>
          .Hide();
         </li>
         <li class="alt">
          <span class="keyword">
           base
          </span>
          .WindowState = FormWindowState.Normal;
         </li>
         <li class="">
          <span class="keyword">
           base
          </span>
          .ShowInTaskbar =
          <span class="keyword">
           false
          </span>
          ;
         </li>
         <li class="alt">
          <span class="keyword">
           base
          </span>
          .TopMost =
          <span class="keyword">
           false
          </span>
          ;
         </li>
         <li class="">
          <span class="keyword">
           base
          </span>
          .MaximizeBox =
          <span class="keyword">
           false
          </span>
          ;
         </li>
         <li class="alt">
          <span class="keyword">
           base
          </span>
          .MinimizeBox =
          <span class="keyword">
           false
          </span>
          ;
         </li>
         <li class="">
          <span class="keyword">
           base
          </span>
          .ControlBox =
          <span class="keyword">
           false
          </span>
          ;
         </li>
         <li class="alt">
         </li>
         <li class="">
          <span class="comment">
           //设置循环监测时间
          </span>
         </li>
         <li class="alt">
          <span class="keyword">
           int
          </span>
          interval =
          <span class="keyword">
           int
          </span>
          .Parse(Cinser.Common.ConfigurationHelper.GetAppSettingsValue(
          <span class="string">
           “Interval”
          </span>
          ));
         </li>
         <li class="">
          timer1.Interval = interval * 1000;
         </li>
         <li class="alt">
         </li>
         <li class="">
          watchingURL = Cinser.Common.ConfigurationHelper.GetAppSettingsValue(
          <span class="string">
           “WatchingURL”
          </span>
          );
         </li>
         <li class="alt">
          RunWhenStart(
          <span class="keyword">
           true
          </span>
          ,
          <span class="string">
           “zhApp.exe”
          </span>
          ,
          <span class="string">
           “\””
          </span>
          + Application.StartupPath +
          <span class="string">
           “\\zhApp.exe\” AutoRun”
          </span>
          );
         </li>
         <li class="">
          Run();
         </li>
         <li class="alt">
          dal.AddLog(
          <span class="string">
           “程序初始化成功”
          </span>
          );
         </li>
         <li class="">
          LoopCount += 1;
         </li>
         <li class="alt">
          }
         </li>
         <li class="">
         </li>
         <li class="alt">
          <span class="comment">
           //设置程序开机自启动
          </span>
         </li>
         <li class="">
          <span class="keyword">
           public
          </span>
          <span class="keyword">
           void
          </span>
          RunWhenStart(
          <span class="keyword">
           bool
          </span>
          Started,
          <span class="keyword">
           string
          </span>
          name,
          <span class="keyword">
           string
          </span>
          path)
         </li>
         <li class="alt">
          {
         </li>
         <li class="">
          RegistryKey HKLM = Registry.CurrentUser;
         </li>
         <li class="alt">
          RegistryKey Run = HKLM.CreateSubKey(@
          <span class="string">
           “SOFTWARE\Microsoft\Windows\CurrentVersion\Run”
          </span>
          );
         </li>
         <li class="">
          <span class="keyword">
           if
          </span>
          (Started ==
          <span class="keyword">
           true
          </span>
          )
         </li>
         <li class="alt">
          {
         </li>
         <li class="">
          <span class="keyword">
           try
          </span>
         </li>
         <li class="alt">
          {
         </li>
         <li class="">
          Run.SetValue(name, path);
         </li>
         <li class="alt">
          HKLM.Close();
         </li>
         <li class="">
          }
         </li>
         <li class="alt">
          <span class="keyword">
           catch
          </span>
          (Exception ex)
          <span class="comment">
           //没有权限会异常
          </span>
         </li>
         <li class="">
          {
         </li>
         <li class="alt">
          <span class="keyword">
           throw
          </span>
          ex;
         </li>
         <li class="">
          }
         </li>
         <li class="alt">
          }
         </li>
         <li class="">
          <span class="keyword">
           else
          </span>
         </li>
         <li class="alt">
          {
         </li>
         <li class="">
          <span class="keyword">
           try
          </span>
         </li>
         <li class="alt">
          {
         </li>
         <li class="">
          Run.DeleteValue(name);
         </li>
         <li class="alt">
          HKLM.Close();
         </li>
         <li class="">
          }
         </li>
         <li class="alt">
          <span class="keyword">
           catch
          </span>
          (Exception ex)
          <span class="comment">
           //没有权限会异常
          </span>
         </li>
         <li class="">
          {
         </li>
         <li class="alt">
          <span class="keyword">
           throw
          </span>
          ex;
         </li>
         <li class="">
          }
         </li>
         <li class="alt">
          }
         </li>
         <li class="">
          }
         </li>
         <li class="alt">
         </li>
         <li class="">
          <span class="comment">
           /// &lt;summary&gt;
          </span>
         </li>
         <li class="alt">
          <span class="comment">
           /// 运行监测流程
          </span>
         </li>
         <li class="">
          <span class="comment">
           /// &lt;/summary&gt;
          </span>
         </li>
         <li class="alt">
          <span class="keyword">
           private
          </span>
          <span class="keyword">
           void
          </span>
          Run()
         </li>
         <li class="">
          {
         </li>
         <li class="alt">
          List&lt;Question&gt; questions = GetQuestions(Cinser.Common.HttpHelper.GetString(watchingURL));
         </li>
         <li class="">
          <span class="keyword">
           string
          </span>
          ids = dal.GetExistIdsStr();
         </li>
         <li class="alt">
          <span class="keyword">
           for
          </span>
          (
          <span class="keyword">
           int
          </span>
          i = 0; i &lt; questions.Count; i++)
         </li>
         <li class="">
          {
         </li>
         <li class="alt">
          <span class="keyword">
           if
          </span>
          (ids.IndexOf(questions[i].Id) != -1)
         </li>
         <li class="">
          {
         </li>
         <li class="alt">
          questions.Remove(questions[i]);
         </li>
         <li class="">
          i–;
         </li>
         <li class="alt">
          }
         </li>
         <li class="">
          <span class="keyword">
           else
          </span>
         </li>
         <li class="alt">
          {
         </li>
         <li class="">
          <span class="keyword">
           if
          </span>
          (ids ==
          <span class="keyword">
           string
          </span>
          .Empty)
         </li>
         <li class="alt">
          ids = questions[i].Id;
         </li>
         <li class="">
          <span class="keyword">
           else
          </span>
         </li>
         <li class="alt">
          ids +=
          <span class="string">
           “,”
          </span>
          + questions[i].Id;
         </li>
         <li class="">
          }
         </li>
         <li class="alt">
          }
         </li>
         <li class="">
          <span class="keyword">
           if
          </span>
          (questions.Count &gt; 0)
         </li>
         <li class="alt">
          {
         </li>
         <li class="">
          SendQuestions(questions);
         </li>
         <li class="alt">
          dal.WriteIdStrToTxt(ids);
         </li>
         <li class="">
          dal.Add(questions);
         </li>
         <li class="alt">
          dal.AddLog(
          <span class="keyword">
           string
          </span>
          .Format(
          <span class="string">
           “获取了{0}条新数据。”
          </span>
          , questions.Count));
         </li>
         <li class="">
          }
         </li>
         <li class="alt">
          }
         </li>
         <li class="">
         </li>
         <li class="alt">
          <span class="comment">
           /// &lt;summary&gt;
          </span>
         </li>
         <li class="">
          <span class="comment">
           /// 从监测站点源数据中抓取问题
          </span>
         </li>
         <li class="alt">
          <span class="comment">
           /// &lt;/summary&gt;
          </span>
         </li>
         <li class="">
          <span class="keyword">
           private
          </span>
          List&lt;Question&gt; GetQuestions(
          <span class="keyword">
           string
          </span>
          source)
         </li>
         <li class="alt">
          {
         </li>
         <li class="">
          List&lt;Question&gt; questions =
          <span class="keyword">
           new
          </span>
          List&lt;Question&gt;();
         </li>
         <li class="alt">
          <span class="keyword">
           string
          </span>
          startStr =
          <span class="string">
           “&lt;a class=\”question_link\””
          </span>
          ;
         </li>
         <li class="">
          <span class="keyword">
           if
          </span>
          (source.IndexOf(startStr) != -1)
         </li>
         <li class="alt">
          {
         </li>
         <li class="">
          Question q =
          <span class="keyword">
           new
          </span>
          Question();
         </li>
         <li class="alt">
          <span class="keyword">
           string
          </span>
          content = Cinser.Common.StringPlus.SubString(source, startStr,
          <span class="string">
           “&lt;/a&gt;”
          </span>
          );
         </li>
         <li class="">
          q.Id = Cinser.Common.StringPlus.SubString(content,
          <span class="string">
           “question/”
          </span>
          ,
          <span class="string">
           “\””
          </span>
          );
         </li>
         <li class="alt">
          q.Title = content.Substring(content.IndexOf(
          <span class="string">
           “&gt;”
          </span>
          ) + 1);
         </li>
         <li class="">
          q.Time = DateTime.Now;
         </li>
         <li class="alt">
          questions.Add(q);
         </li>
         <li class="">
          source = source.Substring(source.IndexOf(startStr) + startStr.Length);
         </li>
         <li class="alt">
          questions.AddRange(GetQuestions(source));
         </li>
         <li class="">
          }
         </li>
         <li class="alt">
          <span class="keyword">
           return
          </span>
          questions;
         </li>
         <li class="">
          }
         </li>
         <li class="alt">
         </li>
         <li class="">
          <span class="keyword">
           private
          </span>
          <span class="keyword">
           bool
          </span>
          SendQuestions(List&lt;Question&gt; questions)
         </li>
         <li class="alt">
          {
         </li>
         <li class="">
          <span class="keyword">
           bool
          </span>
          bSuccess =
          <span class="keyword">
           true
          </span>
          ;
         </li>
         <li class="alt">
          List&lt;
          <span class="keyword">
           string
          </span>
          &gt; strMailAddressTo = Cinser.Common.ConfigurationHelper.GetAppSettingsValue(
          <span class="string">
           “strMailAddressTo”
          </span>
          ).Split(
          <span class="string">
           ‘,’
          </span>
          ).ToList();
         </li>
         <li class="">
          <span class="keyword">
           string
          </span>
          smtpAddress = Cinser.Common.ConfigurationHelper.GetAppSettingsValue(
          <span class="string">
           “smtpAddress”
          </span>
          );
         </li>
         <li class="alt">
          <span class="keyword">
           string
          </span>
          sendEmailFrom = Cinser.Common.ConfigurationHelper.GetAppSettingsValue(
          <span class="string">
           “sendEmailFrom”
          </span>
          );
         </li>
         <li class="">
          <span class="keyword">
           string
          </span>
          sendEmailFromPwd = Cinser.Common.ConfigurationHelper.GetAppSettingsValue(
          <span class="string">
           “sendEmailFromPwd”
          </span>
          );
         </li>
         <li class="alt">
          <span class="keyword">
           string
          </span>
          emailName = Cinser.Common.ConfigurationHelper.GetAppSettingsValue(
          <span class="string">
           “EmailName”
          </span>
          );
         </li>
         <li class="">
          <span class="comment">
           //密码解密，开源的话就去掉这步吧，这样配置的时候直接配置明文密码就行。
          </span>
         </li>
         <li class="alt">
          <span class="comment">
           //sendEmailFromPwd = Cinser.Common.Security.DecryptDES(sendEmailFromPwd, “yuiophgf”);
          </span>
         </li>
         <li class="">
          <span class="keyword">
           string
          </span>
          msg =
          <span class="keyword">
           string
          </span>
          .Empty;
         </li>
         <li class="alt">
          SendCompletedEventHandler s =
          <span class="keyword">
           new
          </span>
          SendCompletedEventHandler(SendCompleted);
         </li>
         <li class="">
          <span class="keyword">
           string
          </span>
          content = GetQustionsListStr(questions);
         </li>
         <li class="alt">
          content +=
          <span class="string">
           “\n\n信息来源于：”
          </span>
          + watchingURL;
         </li>
         <li class="">
          Cinser.Common.SmtpEmailSend.SendEmail(strMailAddressTo, emailName + DateTime.Now.ToString(), content, smtpAddress, 0x19, sendEmailFrom, sendEmailFromPwd,
          <span class="string">
           “163测试邮箱”
          </span>
          ,
          <span class="keyword">
           null
          </span>
          ,
          <span class="keyword">
           out
          </span>
          msg, s);
         </li>
         <li class="alt">
          <span class="keyword">
           return
          </span>
          bSuccess;
         </li>
         <li class="">
          }
         </li>
         <li class="alt">
         </li>
         <li class="">
          <span class="keyword">
           private
          </span>
          <span class="keyword">
           void
          </span>
          SendCompleted(
          <span class="keyword">
           object
          </span>
          sender, AsyncCompletedEventArgs e)
         </li>
         <li class="alt">
          {
         </li>
         <li class="">
          }
         </li>
         <li class="alt">
         </li>
         <li class="">
          <span class="keyword">
           private
          </span>
          <span class="keyword">
           string
          </span>
          GetQustionsListStr(List&lt;Question&gt; questions)
         </li>
         <li class="alt">
          {
         </li>
         <li class="">
          <span class="keyword">
           string
          </span>
          content =
          <span class="keyword">
           string
          </span>
          .Empty;
         </li>
         <li class="alt">
          <span class="keyword">
           if
          </span>
          (questions !=
          <span class="keyword">
           null
          </span>
          &amp;&amp; questions.Count &gt; 0)
         </li>
         <li class="">
          {
         </li>
         <li class="alt">
          content =
          <span class="keyword">
           string
          </span>
          .Format(
          <span class="string">
           “名称：{0},url：{1}”
          </span>
          , questions[0].Title, questions[0].Url);
         </li>
         <li class="">
          <span class="keyword">
           for
          </span>
          (
          <span class="keyword">
           int
          </span>
          i = 1; i &lt; questions.Count; i++)
         </li>
         <li class="alt">
          {
         </li>
         <li class="">
          content +=
          <span class="keyword">
           string
          </span>
          .Format(
          <span class="string">
           “\n 名称：{0},url：{1}”
          </span>
          , questions[i].Title, questions[i].Url);
         </li>
         <li class="alt">
          }
         </li>
         <li class="">
          }
         </li>
         <li class="alt">
          <span class="keyword">
           return
          </span>
          content;
         </li>
         <li class="">
          }
         </li>
         <li class="alt">
         </li>
         <li class="">
          <span class="keyword">
           private
          </span>
          <span class="keyword">
           void
          </span>
          timer1_Tick(
          <span class="keyword">
           object
          </span>
          sender, EventArgs e)
         </li>
         <li class="alt">
          {
         </li>
         <li class="">
          <span class="keyword">
           int
          </span>
          interval =
          <span class="keyword">
           int
          </span>
          .Parse(Cinser.Common.ConfigurationHelper.GetAppSettingsValue(
          <span class="string">
           “Interval”
          </span>
          ));
         </li>
         <li class="alt">
          timer1.Interval = interval * 1000;
         </li>
         <li class="">
          Run();
         </li>
         <li class="alt">
          dal.AddLog(
          <span class="keyword">
           string
          </span>
          .Format(
          <span class="string">
           “程序循环次数：{0}”
          </span>
          , LoopCount++));
         </li>
         <li class="">
          }
         </li>
         <li class="alt">
          }
         </li>
        </ol>
       </div>
       <p>
        知乎问题model：Question.cs
       </p>
       <div class="dp-highlighter bg_csharp">
        <ol class="dp-c" start="1">
         <li class="alt">
          <span class="keyword">
           public
          </span>
          <span class="keyword">
           class
          </span>
          Question
         </li>
         <li class="">
          {
         </li>
         <li class="alt">
          <span class="keyword">
           string
          </span>
          id, title, url, type, remark;
         </li>
         <li class="">
          DateTime time;
         </li>
         <li class="alt">
         </li>
         <li class="">
          <span class="keyword">
           public
          </span>
          <span class="keyword">
           string
          </span>
          Remark
         </li>
         <li class="alt">
          {
         </li>
         <li class="">
          <span class="keyword">
           get
          </span>
          {
          <span class="keyword">
           return
          </span>
          remark; }
         </li>
         <li class="alt">
          <span class="keyword">
           set
          </span>
          { remark = value; }
         </li>
         <li class="">
          }
         </li>
         <li class="alt">
         </li>
         <li class="">
          <span class="keyword">
           public
          </span>
          DateTime Time
         </li>
         <li class="alt">
          {
         </li>
         <li class="">
          <span class="keyword">
           get
          </span>
          {
          <span class="keyword">
           return
          </span>
          time; }
         </li>
         <li class="alt">
          <span class="keyword">
           set
          </span>
          { time = value; }
         </li>
         <li class="">
          }
         </li>
         <li class="alt">
         </li>
         <li class="">
          <span class="keyword">
           public
          </span>
          <span class="keyword">
           string
          </span>
          Type
         </li>
         <li class="alt">
          {
         </li>
         <li class="">
          <span class="keyword">
           get
          </span>
          {
          <span class="keyword">
           return
          </span>
          type; }
         </li>
         <li class="alt">
          <span class="keyword">
           set
          </span>
          { type = value; }
         </li>
         <li class="">
          }
         </li>
         <li class="alt">
         </li>
         <li class="">
          <span class="keyword">
           public
          </span>
          <span class="keyword">
           string
          </span>
          Url
         </li>
         <li class="alt">
          {
         </li>
         <li class="">
          <span class="keyword">
           get
          </span>
         </li>
         <li class="alt">
          {
         </li>
         <li class="">
          <span class="keyword">
           if
          </span>
          (
          <span class="keyword">
           string
          </span>
          .IsNullOrEmpty(url))
         </li>
         <li class="alt">
          {
         </li>
         <li class="">
          url =
          <span class="keyword">
           string
          </span>
          .Format(
          <span class="string">
           “http://www.zhihu.com/question/{0}”
          </span>
          , Id);
         </li>
         <li class="alt">
          }
         </li>
         <li class="">
          <span class="keyword">
           return
          </span>
          url;
         </li>
         <li class="alt">
          }
         </li>
         <li class="">
          <span class="keyword">
           set
          </span>
          { url = value; }
         </li>
         <li class="alt">
          }
         </li>
         <li class="">
         </li>
         <li class="alt">
          <span class="keyword">
           public
          </span>
          <span class="keyword">
           string
          </span>
          Title
         </li>
         <li class="">
          {
         </li>
         <li class="alt">
          <span class="keyword">
           get
          </span>
          {
          <span class="keyword">
           return
          </span>
          title; }
         </li>
         <li class="">
          <span class="keyword">
           set
          </span>
          { title = value; }
         </li>
         <li class="alt">
          }
         </li>
         <li class="">
         </li>
         <li class="alt">
          <span class="keyword">
           public
          </span>
          <span class="keyword">
           string
          </span>
          Id
         </li>
         <li class="">
          {
         </li>
         <li class="alt">
          <span class="keyword">
           get
          </span>
          {
          <span class="keyword">
           return
          </span>
          id; }
         </li>
         <li class="">
          <span class="keyword">
           set
          </span>
          { id = value; }
         </li>
         <li class="alt">
          }
         </li>
         <li class="">
          }
         </li>
        </ol>
       </div>
       <p>
        数据操作类DataProvider.cs
       </p>
       <div class="dp-highlighter bg_csharp">
        <ol class="dp-c" start="1">
         <li class="alt">
          <span class="comment">
           /// &lt;summary&gt;
          </span>
         </li>
         <li class="">
          <span class="comment">
           ///  知乎问题数据表操作Provider
          </span>
         </li>
         <li class="alt">
          <span class="comment">
           /// &lt;/summary&gt;
          </span>
         </li>
         <li class="">
          <span class="keyword">
           public
          </span>
          <span class="keyword">
           class
          </span>
          DataProvider
         </li>
         <li class="alt">
          {
         </li>
         <li class="">
          <span class="keyword">
           private
          </span>
          <span class="keyword">
           string
          </span>
          connStr =
          <span class="keyword">
           string
          </span>
          .Empty;
         </li>
         <li class="alt">
          Cinser.DBUtility.DAL.OracleDALCommon dal;
         </li>
         <li class="">
          <span class="keyword">
           string
          </span>
          txtPath =
          <span class="string">
           “”
          </span>
          ;
         </li>
         <li class="alt">
          <span class="keyword">
           string
          </span>
          logPath =
          <span class="string">
           “”
          </span>
          ;
         </li>
         <li class="">
          <span class="keyword">
           string
          </span>
          debugPath =
          <span class="keyword">
           string
          </span>
          .Empty;
         </li>
         <li class="alt">
         </li>
         <li class="">
          <span class="keyword">
           public
          </span>
          <span class="keyword">
           string
          </span>
          DebugPath
         </li>
         <li class="alt">
          {
         </li>
         <li class="">
          <span class="keyword">
           get
          </span>
         </li>
         <li class="alt">
          {
         </li>
         <li class="">
          <span class="keyword">
           if
          </span>
          (debugPath ==
          <span class="keyword">
           string
          </span>
          .Empty)
         </li>
         <li class="alt">
          debugPath = System.AppDomain.CurrentDomain.BaseDirectory;
         </li>
         <li class="">
         </li>
         <li class="alt">
          <span class="keyword">
           if
          </span>
          (debugPath.EndsWith(
          <span class="string">
           “\\”
          </span>
          ) ==
          <span class="keyword">
           false
          </span>
          )
         </li>
         <li class="">
          {
         </li>
         <li class="alt">
          debugPath +=
          <span class="string">
           “\\”
          </span>
          ;
         </li>
         <li class="">
          }
         </li>
         <li class="alt">
          <span class="keyword">
           return
          </span>
          debugPath;
         </li>
         <li class="">
          }
         </li>
         <li class="alt">
          <span class="keyword">
           set
          </span>
          { debugPath = value; }
         </li>
         <li class="">
          }
         </li>
         <li class="alt">
         </li>
         <li class="">
          <span class="keyword">
           public
          </span>
          <span class="keyword">
           string
          </span>
          LogPath
         </li>
         <li class="alt">
          {
         </li>
         <li class="">
          <span class="keyword">
           get
          </span>
         </li>
         <li class="alt">
          {
         </li>
         <li class="">
          <span class="keyword">
           if
          </span>
          (logPath ==
          <span class="keyword">
           string
          </span>
          .Empty)
         </li>
         <li class="alt">
          {
         </li>
         <li class="">
          logPath = DebugPath +
          <span class="string">
           “Log.txt”
          </span>
          ;
         </li>
         <li class="alt">
          }
         </li>
         <li class="">
          <span class="keyword">
           return
          </span>
          logPath;
         </li>
         <li class="alt">
          }
         </li>
         <li class="">
          }
         </li>
         <li class="alt">
         </li>
         <li class="">
          <span class="keyword">
           public
          </span>
          DataProvider()
         </li>
         <li class="alt">
          {
         </li>
         <li class="">
          dal =
          <span class="keyword">
           new
          </span>
          Cinser.DBUtility.DAL.OracleDALCommon(
          <span class="keyword">
           this
          </span>
          .ConnStr);
         </li>
         <li class="alt">
          }
         </li>
         <li class="">
         </li>
         <li class="alt">
          <span class="keyword">
           public
          </span>
          <span class="keyword">
           string
          </span>
          TxtPath
         </li>
         <li class="">
          {
         </li>
         <li class="alt">
          <span class="keyword">
           get
          </span>
         </li>
         <li class="">
          {
         </li>
         <li class="alt">
          <span class="keyword">
           if
          </span>
          (txtPath ==
          <span class="keyword">
           string
          </span>
          .Empty)
         </li>
         <li class="">
          {
         </li>
         <li class="alt">
          txtPath = DebugPath +
          <span class="string">
           “Ids.txt”
          </span>
          ;
         </li>
         <li class="">
          }
         </li>
         <li class="alt">
          <span class="keyword">
           return
          </span>
          txtPath;
         </li>
         <li class="">
          }
         </li>
         <li class="alt">
          }
         </li>
         <li class="">
         </li>
         <li class="alt">
          <span class="keyword">
           public
          </span>
          <span class="keyword">
           string
          </span>
          ConnStr
         </li>
         <li class="">
          {
         </li>
         <li class="alt">
          <span class="keyword">
           get
          </span>
         </li>
         <li class="">
          {
         </li>
         <li class="alt">
          <span class="keyword">
           if
          </span>
          (connStr ==
          <span class="keyword">
           string
          </span>
          .Empty)
         </li>
         <li class="">
          {
         </li>
         <li class="alt">
          connStr = Cinser.Common.ConfigurationHelper.GetAppSettingsValue(
          <span class="string">
           “connStr”
          </span>
          );
         </li>
         <li class="">
          }
         </li>
         <li class="alt">
          <span class="keyword">
           return
          </span>
          connStr;
         </li>
         <li class="">
          }
         </li>
         <li class="alt">
          <span class="keyword">
           set
          </span>
          { connStr = value; }
         </li>
         <li class="">
          }
         </li>
         <li class="alt">
         </li>
         <li class="">
          <span class="keyword">
           public
          </span>
          <span class="keyword">
           bool
          </span>
          CanConnectOracleServer
         </li>
         <li class="alt">
          {
         </li>
         <li class="">
          <span class="keyword">
           get
          </span>
         </li>
         <li class="alt">
          {
         </li>
         <li class="">
          <span class="keyword">
           return
          </span>
          dal.Open();
         </li>
         <li class="alt">
          }
         </li>
         <li class="">
          }
         </li>
         <li class="alt">
         </li>
         <li class="">
          <span class="comment">
           /// &lt;summary&gt;
          </span>
         </li>
         <li class="alt">
          <span class="comment">
           /// 将抓取到的问题写入oracle数据库中
          </span>
         </li>
         <li class="">
          <span class="comment">
           /// &lt;/summary&gt;
          </span>
         </li>
         <li class="alt">
          <span class="comment">
           /// &lt;param name=”questions”&gt;&lt;/param&gt;
          </span>
         </li>
         <li class="">
          <span class="comment">
           /// &lt;returns&gt;&lt;/returns&gt;
          </span>
         </li>
         <li class="alt">
          <span class="keyword">
           public
          </span>
          <span class="keyword">
           bool
          </span>
          Add(List&lt;Question&gt; questions)
         </li>
         <li class="">
          {
         </li>
         <li class="alt">
          <span class="keyword">
           bool
          </span>
          bReturn =
          <span class="keyword">
           false
          </span>
          ;
         </li>
         <li class="">
          <span class="keyword">
           try
          </span>
         </li>
         <li class="alt">
          {
         </li>
         <li class="">
          <span class="keyword">
           for
          </span>
          (
          <span class="keyword">
           int
          </span>
          i = 0; i &lt; questions.Count; i++)
         </li>
         <li class="alt">
          {
         </li>
         <li class="">
          dal.Add(
          <span class="string">
           “qustions”
          </span>
          , questions[i]);
         </li>
         <li class="alt">
          }
         </li>
         <li class="">
          bReturn =
          <span class="keyword">
           true
          </span>
          ;
         </li>
         <li class="alt">
          }
         </li>
         <li class="">
          <span class="keyword">
           catch
          </span>
          { }
         </li>
         <li class="alt">
          <span class="keyword">
           return
          </span>
          bReturn;
         </li>
         <li class="">
          }
         </li>
         <li class="alt">
         </li>
         <li class="">
          <span class="keyword">
           public
          </span>
          DataTable GetQustions(
          <span class="keyword">
           string
          </span>
          sqlWhere =
          <span class="string">
           “1=1”
          </span>
          )
         </li>
         <li class="alt">
          {
         </li>
         <li class="">
          <span class="keyword">
           try
          </span>
         </li>
         <li class="alt">
          {
         </li>
         <li class="">
          DataTable dt = dal.GetDataList(
          <span class="string">
           “qustions”
          </span>
          , sqlWhere);
         </li>
         <li class="alt">
          <span class="keyword">
           return
          </span>
          dt;
         </li>
         <li class="">
          }
         </li>
         <li class="alt">
          <span class="keyword">
           catch
          </span>
         </li>
         <li class="">
          {
         </li>
         <li class="alt">
          <span class="keyword">
           return
          </span>
          <span class="keyword">
           null
          </span>
          ;
         </li>
         <li class="">
          }
         </li>
         <li class="alt">
          }
         </li>
         <li class="">
         </li>
         <li class="alt">
          <span class="keyword">
           public
          </span>
          <span class="keyword">
           bool
          </span>
          IsExist(
          <span class="keyword">
           string
          </span>
          id)
         </li>
         <li class="">
          {
         </li>
         <li class="alt">
          <span class="keyword">
           try
          </span>
         </li>
         <li class="">
          {
         </li>
         <li class="alt">
          <span class="keyword">
           string
          </span>
          sqlWhere =
          <span class="string">
           “id='”
          </span>
          + id +
          <span class="string">
           “‘”
          </span>
          ;
         </li>
         <li class="">
          DataTable dt = dal.GetDataList(
          <span class="string">
           “qustions”
          </span>
          , sqlWhere);
         </li>
         <li class="alt">
          <span class="keyword">
           return
          </span>
          dt.Rows.Count &gt; 0;
         </li>
         <li class="">
          }
         </li>
         <li class="alt">
          <span class="keyword">
           catch
          </span>
         </li>
         <li class="">
          {
         </li>
         <li class="alt">
          <span class="keyword">
           return
          </span>
          <span class="keyword">
           false
          </span>
          ;
         </li>
         <li class="">
          }
         </li>
         <li class="alt">
          }
         </li>
         <li class="">
         </li>
         <li class="alt">
          <span class="comment">
           /// &lt;summary&gt;
          </span>
         </li>
         <li class="">
          <span class="comment">
           /// 获取已经抓取过的问题ID字符串
          </span>
         </li>
         <li class="alt">
          <span class="comment">
           /// &lt;/summary&gt;
          </span>
         </li>
         <li class="">
          <span class="comment">
           /// &lt;returns&gt;&lt;/returns&gt;
          </span>
         </li>
         <li class="alt">
          <span class="keyword">
           public
          </span>
          <span class="keyword">
           string
          </span>
          GetExistIdsStr()
         </li>
         <li class="">
          {
         </li>
         <li class="alt">
          <span class="keyword">
           string
          </span>
          ids =
          <span class="keyword">
           string
          </span>
          .Empty;
         </li>
         <li class="">
          <span class="comment">
           //如果能连上远程的oracle服务器则从oracle数据库中取ID字符串
          </span>
         </li>
         <li class="alt">
          <span class="keyword">
           if
          </span>
          (CanConnectOracleServer)
         </li>
         <li class="">
          {
         </li>
         <li class="alt">
          DataTable dt = GetQustions();
         </li>
         <li class="">
          <span class="keyword">
           if
          </span>
          (dt !=
          <span class="keyword">
           null
          </span>
          &amp;&amp; dt.Rows.Count &gt; 0)
         </li>
         <li class="alt">
          {
         </li>
         <li class="">
          ids = dt.Rows[0][
          <span class="string">
           “id”
          </span>
          ].ToString();
         </li>
         <li class="alt">
          <span class="keyword">
           for
          </span>
          (
          <span class="keyword">
           int
          </span>
          i = 1; i &lt; dt.Rows.Count; i++)
         </li>
         <li class="">
          {
         </li>
         <li class="alt">
          ids +=
          <span class="string">
           “,”
          </span>
          + dt.Rows[i][
          <span class="string">
           “id”
          </span>
          ].ToString();
         </li>
         <li class="">
          }
         </li>
         <li class="alt">
          }
         </li>
         <li class="">
          }
         </li>
         <li class="alt">
          <span class="keyword">
           else
          </span>
         </li>
         <li class="">
          {
          <span class="comment">
           //如果能连上远程的oracle服务器关机了，连不上则从本地Ids.txt中取ID字符串
          </span>
         </li>
         <li class="alt">
          <span class="keyword">
           if
          </span>
          (File.Exists(TxtPath))
         </li>
         <li class="">
          ids = File.ReadAllText(TxtPath);
         </li>
         <li class="alt">
          }
         </li>
         <li class="">
          <span class="keyword">
           return
          </span>
          ids;
         </li>
         <li class="alt">
          }
         </li>
         <li class="">
         </li>
         <li class="alt">
          <span class="comment">
           /// &lt;summary&gt;
          </span>
         </li>
         <li class="">
          <span class="comment">
           /// 将最新取到的问题记录至ids.txt中，以此标记这些问题为已读问题
          </span>
         </li>
         <li class="alt">
          <span class="comment">
           /// &lt;/summary&gt;
          </span>
         </li>
         <li class="">
          <span class="comment">
           /// &lt;param name=”ids”&gt;&lt;/param&gt;
          </span>
         </li>
         <li class="alt">
          <span class="keyword">
           public
          </span>
          <span class="keyword">
           void
          </span>
          WriteIdStrToTxt(
          <span class="keyword">
           string
          </span>
          ids)
         </li>
         <li class="">
          {
         </li>
         <li class="alt">
          <span class="keyword">
           if
          </span>
          (File.Exists(
          <span class="keyword">
           this
          </span>
          .TxtPath) ==
          <span class="keyword">
           false
          </span>
          )
         </li>
         <li class="">
          File.Create(TxtPath);
         </li>
         <li class="alt">
          File.WriteAllText(
          <span class="keyword">
           this
          </span>
          .TxtPath, ids);
         </li>
         <li class="">
          }
         </li>
         <li class="alt">
         </li>
         <li class="">
          <span class="comment">
           /// &lt;summary&gt;
          </span>
         </li>
         <li class="alt">
          <span class="comment">
           /// 写程序log,方便错误追踪。
          </span>
         </li>
         <li class="">
          <span class="comment">
           /// &lt;/summary&gt;
          </span>
         </li>
         <li class="alt">
          <span class="comment">
           /// &lt;param name=”LogMsg”&gt;&lt;/param&gt;
          </span>
         </li>
         <li class="">
          <span class="keyword">
           public
          </span>
          <span class="keyword">
           void
          </span>
          AddLog(
          <span class="keyword">
           string
          </span>
          LogMsg)
         </li>
         <li class="alt">
          {
         </li>
         <li class="">
          <span class="keyword">
           string
          </span>
          logStr =
          <span class="keyword">
           string
          </span>
          .Format(
          <span class="string">
           “{0}:{1}.\n”
          </span>
          , DateTime.Now.ToString(), LogMsg);
         </li>
         <li class="alt">
          <span class="keyword">
           if
          </span>
          (File.Exists(
          <span class="keyword">
           this
          </span>
          .LogPath) ==
          <span class="keyword">
           false
          </span>
          )
         </li>
         <li class="">
          File.Create(LogPath);
         </li>
         <li class="alt">
          <span class="keyword">
           string
          </span>
          [] logs = File.ReadAllLines(LogPath);
         </li>
         <li class="">
          <span class="keyword">
           if
          </span>
          (logs.Length &gt;= 520)
         </li>
         <li class="alt">
          File.WriteAllText(LogPath, logStr);
         </li>
         <li class="">
          <span class="keyword">
           else
          </span>
         </li>
         <li class="alt">
          {
         </li>
         <li class="">
          StreamWriter sw = File.AppendText(LogPath);
         </li>
         <li class="alt">
          sw.WriteLine(logStr);
         </li>
         <li class="">
          sw.Close();
         </li>
         <li class="alt">
          }
         </li>
         <li class="">
          }
         </li>
         <li class="alt">
          }
         </li>
        </ol>
       </div>
       <p>
       </p>
       <p>
        文章出处：
        <a href="http://blog.csdn.net/wuyidexinsheng/article/details/42964707">
         http://blog.csdn.net/wuyidexinsheng/article/details/42964707
        </a>
       </p>
      </div>
      <div>
       <strong>
        注：转载文章均来自于公开网络，仅供学习使用，不会用于任何商业用途，如果侵犯到原作者的权益，请您与我们联系删除或者授权事宜，联系邮箱：contact@dataunion.org。转载数盟网站文章请注明原文章作者，否则产生的任何版权纠纷与数盟无关。
       </strong>
      </div>
      <!--content_text-->
      <div class="fenxian">
       <!-- JiaThis Button BEGIN -->
       <div class="jiathis_style_32x32">
        <p class="jiathis_button_weixin">
        </p>
        <p class="jiathis_button_tsina">
        </p>
        <p class="jiathis_button_qzone">
        </p>
        <p class="jiathis_button_cqq">
        </p>
        <p class="jiathis_button_tumblr">
        </p>
        <a class="jiathis jiathis_txt jtico jtico_jiathis" href="http://www.jiathis.com/share" target="_blank">
        </a>
        <p class="jiathis_counter_style">
        </p>
       </div>
       <!-- JiaThis Button END -->
      </div>
     </article>
     <!--content-->
     <!--相关文章-->
     <div class="xianguan">
      <div class="xianguantitle">
       相关文章！
      </div>
      <ul class="pic">
       <li>
        <a href="http://dataunion.org/20824.html">
         <img src="http://dataunion.org/wp-content/uploads/2015/09/t018630756a7e263b33-300x165.jpg"/>
        </a>
        <a class="link" href="http://dataunion.org/20824.html" rel="bookmark" title="如何判断一笔交易是否属于欺诈？你只是需要一点数据挖掘">
         如何判断一笔交易是否属于欺诈？你只是需要一点数据挖掘
        </a>
       </li>
       <li>
        <a href="http://dataunion.org/20679.html">
         <img src="http://dataunion.org/wp-content/uploads/2015/09/t010e3a70fbcfef2c12-300x101.jpg"/>
        </a>
        <a class="link" href="http://dataunion.org/20679.html" rel="bookmark" title="一篇文章带你认识“高大上”的图数据挖掘">
         一篇文章带你认识“高大上”的图数据挖掘
        </a>
       </li>
       <li>
        <a href="http://dataunion.org/20337.html">
         <img src="http://dataunion.org/wp-content/uploads/2015/08/t018da5f8c4955f422c_副本.jpg"/>
        </a>
        <a class="link" href="http://dataunion.org/20337.html" rel="bookmark" title="开源爬虫软件汇总！">
         开源爬虫软件汇总！
        </a>
       </li>
       <li>
        <a href="http://dataunion.org/20167.html">
         <img src="http://dataunion.org/wp-content/uploads/2015/07/t0170189d0bb57172e9_副本.jpg"/>
        </a>
        <a class="link" href="http://dataunion.org/20167.html" rel="bookmark" title="浅谈金融行业的数据挖掘之道">
         浅谈金融行业的数据挖掘之道
        </a>
       </li>
      </ul>
     </div>
     <!--相关文章-->
     <div class="comment" id="comments">
      <!-- You can start editing here. -->
      <ul id="comment">
       <li id="comment-12767">
        <span>
         <p class="avatar" href="" target="_blank">
          <img src="https://secure.gravatar.com/avatar/7633c8636fa4099608191032ac04a295?s=86"/>
         </p>
        </span>
        <div class="mhcc">
         <address>
          itfanr - 
						2015/01/24
         </address>
         <p>
          膜拜！
         </p>
        </div>
       </li>
       <!-- #comment-## -->
      </ul>
      <div class="title">
       期待你一针见血的评论，Come on！
      </div>
      <div id="respond">
       <p>
        不用想啦，马上
        <a href="http://dataunion.org/wp-login.php?redirect_to=http%3A%2F%2Fdataunion.org%2F8975.html">
         "登录"
        </a>
        发表自已的想法.
       </p>
      </div>
     </div>
     <!-- .nav-single -->
    </div>
    <!--Container End-->
    <aside id="sitebar">
     <div class="sitebar_list2">
      <div class="wptag">
       <span class="tagtitle">
        热门标签+
       </span>
       <div class="tagg">
        <ul class="menu" id="menu-%e5%8f%8b%e6%83%85%e9%93%be%e6%8e%a5">
         <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-1605" id="menu-item-1605">
          <a href="http://taidizh.com/">
           泰迪智慧
          </a>
         </li>
         <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-20884" id="menu-item-20884">
          <a href="http://www.transwarp.cn/">
           星环科技
          </a>
         </li>
         <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-3538" id="menu-item-3538">
          <a href="http://datall.org/">
           珈和遥感
          </a>
         </li>
         <li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-20888" id="menu-item-20888">
          <a href="http://www.chinahadoop.cn/">
           小象学院
          </a>
         </li>
        </ul>
       </div>
      </div>
     </div>
     <div class="sitebar_list">
      <div class="textwidget">
       <div align="center">
        <a href="http://study.163.com/course/courseMain.htm?courseId=991022" target="_blank">
         <img src="http://dataunion.org/wp-content/uploads/2016/03/dv.jpg"/>
        </a>
       </div>
      </div>
     </div>
     <div class="sitebar_list">
      <h4 class="sitebar_title">
       文章分类
      </h4>
      <div class="tagcloud">
       <a class="tag-link-44" href="http://dataunion.org/category/industry/demo" style="font-size: 10.204724409449pt;" title="4个话题">
        Demo展示
       </a>
       <a class="tag-link-31" href="http://dataunion.org/category/experts" style="font-size: 15.826771653543pt;" title="52个话题">
        专家团队
       </a>
       <a class="tag-link-870" href="http://dataunion.org/category/tech/ai" style="font-size: 19.795275590551pt;" title="273个话题">
        人工智能
       </a>
       <a class="tag-link-488" href="http://dataunion.org/category/%e5%8a%a0%e5%85%a5%e6%95%b0%e7%9b%9f" style="font-size: 8pt;" title="1个话题">
        加入数盟
       </a>
       <a class="tag-link-869" href="http://dataunion.org/category/tech/viz" style="font-size: 17.204724409449pt;" title="93个话题">
        可视化
       </a>
       <a class="tag-link-30" href="http://dataunion.org/category/partners" style="font-size: 10.645669291339pt;" title="5个话题">
        合作伙伴
       </a>
       <a class="tag-link-889" href="http://dataunion.org/category/parterc" style="font-size: 11.582677165354pt;" title="8个话题">
        合作会议
       </a>
       <a class="tag-link-104" href="http://dataunion.org/category/books" style="font-size: 12.96062992126pt;" title="15个话题">
        图书
       </a>
       <a class="tag-link-220" href="http://dataunion.org/category/tech/base" style="font-size: 19.850393700787pt;" title="281个话题">
        基础架构
       </a>
       <a class="tag-link-219" href="http://dataunion.org/category/tech/analysis" style="font-size: 19.409448818898pt;" title="232个话题">
        数据分析
       </a>
       <a class="tag-link-887" href="http://dataunion.org/category/tech/dm" style="font-size: 13.291338582677pt;" title="17个话题">
        数据挖掘
       </a>
       <a class="tag-link-34" href="http://dataunion.org/category/tech" style="font-size: 20.732283464567pt;" title="404个话题">
        文章
       </a>
       <a class="tag-link-1" href="http://dataunion.org/category/uncategorized" style="font-size: 22pt;" title="693个话题">
        未分类
       </a>
       <a class="tag-link-4" href="http://dataunion.org/category/events" style="font-size: 14.503937007874pt;" title="29个话题">
        活动
       </a>
       <a class="tag-link-890" href="http://dataunion.org/category/tech/%e6%b7%b1%e5%ba%a6%e5%ad%a6%e4%b9%a0" style="font-size: 10.204724409449pt;" title="4个话题">
        深度学习
       </a>
       <a class="tag-link-221" href="http://dataunion.org/category/tech/devl" style="font-size: 18.968503937008pt;" title="193个话题">
        编程语言
       </a>
       <a class="tag-link-888" href="http://dataunion.org/category/career" style="font-size: 15.661417322835pt;" title="48个话题">
        职业规划
       </a>
       <a class="tag-link-5" href="http://dataunion.org/category/jobs" style="font-size: 14.11811023622pt;" title="25个话题">
        职位
       </a>
       <a class="tag-link-871" href="http://dataunion.org/category/industry" style="font-size: 15.716535433071pt;" title="49个话题">
        行业
       </a>
       <a class="tag-link-613" href="http://dataunion.org/category/industry/case" style="font-size: 16.984251968504pt;" title="84个话题">
        行业应用
       </a>
       <a class="tag-link-885" href="http://dataunion.org/category/industry/news" style="font-size: 17.425196850394pt;" title="102个话题">
        行业资讯
       </a>
       <a class="tag-link-10" href="http://dataunion.org/category/training" style="font-size: 14.228346456693pt;" title="26个话题">
        课程
       </a>
       <a class="tag-link-16" href="http://dataunion.org/category/sources" style="font-size: 15.661417322835pt;" title="48个话题">
        资源
       </a>
      </div>
     </div>
     <div class="sitebar_list">
      <h4 class="sitebar_title">
       功能
      </h4>
      <ul>
       <li>
        <a href="http://dataunion.org/wp-login.php?action=register">
         注册
        </a>
       </li>
       <li>
        <a href="http://dataunion.org/wp-login.php">
         登录
        </a>
       </li>
       <li>
        <a href="http://dataunion.org/feed">
         文章
         <abbr title="Really Simple Syndication">
          RSS
         </abbr>
        </a>
       </li>
       <li>
        <a href="http://dataunion.org/comments/feed">
         评论
         <abbr title="Really Simple Syndication">
          RSS
         </abbr>
        </a>
       </li>
       <li>
        <a href="https://cn.wordpress.org/" title="基于WordPress，一个优美、先进的个人信息发布平台。">
         WordPress.org
        </a>
       </li>
      </ul>
     </div>
    </aside>
    <div class="clear">
    </div>
   </div>
   <!--main-->
   ﻿
   <footer id="dibu">
    <div class="about">
     <div class="right">
      <ul class="menu" id="menu-%e5%ba%95%e9%83%a8%e8%8f%9c%e5%8d%95">
       <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-18024" id="menu-item-18024">
        <a href="http://dataunion.org/category/partners">
         合作伙伴
        </a>
       </li>
       <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-20881" id="menu-item-20881">
        <a href="http://dataunion.org/contribute">
         文章投稿
        </a>
       </li>
       <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-20872" id="menu-item-20872">
        <a href="http://dataunion.org/category/%e5%8a%a0%e5%85%a5%e6%95%b0%e7%9b%9f">
         加入数盟
        </a>
       </li>
       <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-22441" id="menu-item-22441">
        <a href="http://dataunion.org/f-links">
         友情链接
        </a>
       </li>
       <li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-20874" id="menu-item-20874">
        <a href="http://dataunion.org/aboutus">
         关于数盟
        </a>
       </li>
      </ul>
      <p class="banquan">
       数盟社区        ，
        做最棒的数据科学社区
      </p>
     </div>
     <div class="left">
      <ul class="bottomlist">
       <li>
        <a href="http://weibo.com/DataScientistUnion  " target="_blank" 　title="">
         <img src="http://dataunion.org/wp-content/themes/yzipi/images/weibo.png"/>
        </a>
       </li>
       <li>
        <a class="cd-popup-trigger" href="http://dataunion.org/8975.html#0">
         <img src="http://dataunion.org/wp-content/themes/yzipi/images/weixin.png"/>
        </a>
       </li>
      </ul>
      <div class="cd-popup">
       <div class="cd-popup-container">
        <h1>
         扫描二维码,加微信公众号
        </h1>
        <img src="http://dataunion.org/wp-content/themes/yzipi/images/2014-12-06-1515289049.png"/>
        <a class="cd-popup-close" href="http://dataunion.org/8975.html">
        </a>
       </div>
       <!-- cd-popup-container -->
      </div>
      <!-- cd-popup -->
     </div>
    </div>
    <!--about-->
    <div class="bottom">
     <a href="http://dataunion.org/">
      数盟社区
     </a>
     <a href="http://www.miitbeian.gov.cn/" rel="external nofollow" target="_blank">
      京ICP备14026740号
     </a>
     联系我们：
     <a href="mailto:contact@dataunion.org" target="_blank">
      contact@dataunion.org
     </a>
     <div class="tongji">
     </div>
     <!--bottom-->
     <div class="scroll" id="scroll" style="display:none;">
      ︿
     </div>
    </div>
   </footer>
   <!--dibu-->
  </div>
 </body>
</html>